package com.redstars.generate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.redstars.generate.entity.SysGenerateTemplate;
import com.redstars.generate.page.PageResult;
import com.redstars.generate.vo.SysGenerateTemplateVo;
import com.redstars.generate.query.SysGenerateTemplateQuery;
import java.util.List;

/**
 * 项目模板配置
 *
 * @author zhouhx 
 * @since 1.0.0 2022-10-14
 */
public interface SysGenerateTemplateService extends IService<SysGenerateTemplate> {
    /**
    *
    * @description 分页查询
    * @author zhouhx 
    * @since 1.0.0 2022-10-14
    */
    PageResult<SysGenerateTemplateVo> page(SysGenerateTemplateQuery query);
    /**
    *
    * @description 新增
    * @author zhouhx 
    * @since 1.0.0 2022-10-14
    */
    void save(SysGenerateTemplateVo vo);
    /**
    *
    * @description 修改
    * @author zhouhx 
    * @since 1.0.0 2022-10-14
    */
    void update(SysGenerateTemplateVo vo);
    /**
    *
    * @description 删除
    * @author zhouhx 
    * @since 1.0.0 2022-10-14
    */
    void delete(List<Long> idList);
    /**
    *
    * @description 详情
    * @author zhouhx 
    * @since 1.0.0 2022-10-14
    */
    SysGenerateTemplateVo detail(Long id);

    /* *
     *
     * @author zhuohx
     * @description 列表查询
     * @parms  [query]
     * @return java.util.List<com.redstars.generate.vo.SysGenerateTemplateVo>
     * @throws
     * @date 2022/10/17 9:19
     */
    List<SysGenerateTemplateVo> list(SysGenerateTemplateQuery query);

    /* *
     *
     * @author zhuohx
     * @description 获取系统配置的已选择的模板
     * @parms  []
     * @return java.util.List<com.redstars.generate.vo.SysGenerateTemplateVo>
     * @throws
     * @date 2022/10/18 16:01
     */
    List<SysGenerateTemplateVo> getSelectTemplate();

    /**
     *
     * @author zhuohx
     * @description 获取已经选择的tableid模板
     * @parms  [tableId]
     * @return java.util.List<com.redstars.generate.vo.SysGenerateTemplateVo>
     * @throws
     * @date 2023/3/24 9:08
     */
    List<SysGenerateTemplateVo> getSelectTemplate(Long tableId);

    /* *
     *
     * @author zhuohx
     * @description 通过模板版本删除模板数据
     * @parms  [versionId]
     * @return void
     * @throws
     * @date 2022/11/7 17:13
     */
    void removeByTemplateVersion(Long versionId);

   /* *
    *
    * @author zhuohx
    * @description 复制模板
    * @parms  [versionId 模板版本id, templateIds 要复制的模板id]
    * @return void
    * @throws
    * @date 2022/11/8 17:17
    */
    void copyTemplate(Long versionId,List<Long> templateIds);
}